package com.example.demo.config.datasource;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * @Author: njz
 * @Description:
 * @Date: create in 2022/6/6 13:56
 */
public class DataSourceHolder {

    private static final ThreadLocal<String> dataSources = new InheritableThreadLocal<>();

    /**数据源的key集合，用于切换时判断数据源是否存在*/
    private static List<Object> dataSourceKey = new ArrayList<Object>();

    /**
     * 设置数据源
     * @param dataSource
     */
    public static void setDataSource(String dataSource) {
        dataSources.set(dataSource);
    }

    /**
     * 获取数据源名称
     * @return
     */
    public static String getDataSource() {
        return dataSources.get();
    }

    /**
     * 清除数据源
     */
    public static void clearDataSource() {
        dataSources.remove();
    }

    /**
     * 添加数据源key,支持加多个，所以需要用collection
     * @param keys 数据源key
     * @return
     */
    public static boolean addDataSourceKey(Collection<? extends Object> keys){
        return dataSourceKey.addAll(keys);
    }
}
